/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package savet.entidades.atributos;

import java.io.Serializable;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;
import savet.entidades.Trabalhador;

/**
 *
 * @author Rafael
 */
@Entity
@Table
public class Rais implements Serializable {

    @Id
    private Long id;
    @OneToMany
    private List<AtributoData> atributosData;
    @Transient
    private Trabalhador trabalhador;

    public Rais() {
        atributosData = new LinkedList<AtributoData>();
    }

    public Boolean addRais(AtributoData rais) {
        if (rais.getData().getYear() == new Date().getYear()) {
            System.out.println("Rais não obrigatória!");
            rais.setEstado(Atributo.NAO_OBRIGATORIO);
        }
        return atributosData.add(rais);
    }

    public Boolean removeRais(AtributoData rais) {
        return atributosData.remove(rais);
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public List<AtributoData> getTodosAtributosData() {
        return atributosData;
    }

    public void setTodosAtributosData(List<AtributoData> atributosData) {
        for (AtributoData rais : atributosData) {
            if (rais.getData().getYear() == new Date().getYear()) {
                rais.setEstado(Atributo.NAO_OBRIGATORIO);
            }
            if (trabalhador.getAdmissao() != null) {
                if (rais.getData().getYear() < trabalhador.getAdmissao().getYear()) {
                    rais.setEstado(Atributo.NAO_OBRIGATORIO);
                }
            }
            if (trabalhador.getAfastamento() != null) {
                if (rais.getData().getYear() > trabalhador.getAfastamento().getYear()) {
                    rais.setEstado(Atributo.NAO_OBRIGATORIO);
                }
            }
        }
        this.atributosData = new LinkedList<AtributoData>(atributosData);
    }

    public Trabalhador getTrabalhador() {
        return trabalhador;
    }

    public void setTrabalhador(Trabalhador trabalhador) {
        this.trabalhador = trabalhador;
    }
}
